package com.alog.yzd.bookmall.service.cart;

import com.alog.yzd.bookmall.dao.cart.CartDao;
import com.alog.yzd.bookmall.domain.cart.CartItem;
import com.alog.yzd.commons.CommonUtils;

import java.sql.SQLException;
import java.util.List;

public class CartService {
    CartDao cartDao = new CartDao();

    /**
     * 加载多个CartItem
     * @param cartItemIds
     * @return
     */
    public List<CartItem> loadCartItems(String cartItemIds){
        try {
            return cartDao.loadCartItems(cartItemIds);
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }

    /**
     * 修改条目的数量
     * @param cartItemId
     * @param quantity
     * @return
     */
    public CartItem updateQuantity(String cartItemId, String quantity){
        try {
            cartDao.updateQuantity(cartItemId, quantity);
            return cartDao.findByCartItemId(cartItemId);
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }

    /**
     * 批量删除购物车中的条目
     * @param cartItemIds
     */
    public void batchDelete(String cartItemIds){
        try {
            cartDao.batchDelete(cartItemIds);
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }

    /**
     * 添加购物车条目
     * @param cartItem
     */
    public void add(CartItem cartItem){
        try {
            CartItem item = cartDao.findByUidAndBid(cartItem.getUser().getUid(), cartItem.getBook().getBid());
            if(item != null){
                item.setQuantity(item.getQuantity() + cartItem.getQuantity());
                cartDao.updateQuantity(item.getCartItemId(),item.getQuantity() + "");
            } else {
                cartItem.setCartItemId(CommonUtils.uuid());
                cartDao.addCartItem(cartItem);
            }
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    /**
     * 获取用户购物车中所有的条目
     * @param uid
     * @return
     */
    public List<CartItem> myCart(String uid){
        try {
            return cartDao.findByUid(uid);
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
}
